package cn.dankal.flyaudio.friend;


import android.text.TextUtils;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;

import org.w3c.dom.Text;

import api.ChatServiceFactory;
import cn.dankal.basiclib.api.ChatService;
import cn.dankal.basiclib.base.activity.BaseActivity;
import cn.dankal.basiclib.pojo.BaseResponse;
import cn.dankal.basiclib.pojo.CreateGroupByPasswordEntity;
import cn.dankal.basiclib.rx.AbstractSubscriber;
import cn.dankal.basiclib.util.ToastUtils;
import cn.dankal.flyaudio.R;
import cn.dankal.flyaudio.view.NumberInputView;
import cn.dankal.flyaudio.view.NumberKeyboardView;
import cn.dankal.flyaudio.view.OnNumberKeyboardInputListener;

/**
 * 面对面建群
 */
public class CreateGroupByPasswordActivity extends BaseActivity {

    private NumberInputView numin;
    private NumberKeyboardView keyboardView;
    private String lon = "";
    private String lat = "";

    @Override
    protected int getLayoutId() {
        return R.layout.activity_create_group_by_password;
    }

    @Override
    protected void initComponents() {
        addSingleTitleBar("面对面建群");
        numin = findViewById(R.id.numin);
        keyboardView = findViewById(R.id.keyboard);
        keyboardView.setOnNumberKeyboardInputListener(new OnNumberKeyboardInputListener() {
            @Override
            public void onInputValue(String input, boolean complete) {
                numin.updateInputNum(input);
            }
        });
        numin.setInputListener(new NumberInputView.InputCompleteListener() {
            @Override
            public void onComplete(String password) {
                joinGroup(password);
//                ToastUtils.showShort(password);
            }
        });
        onCreate();
    }

    public LocationClient mLocationClient = null;
    private MyLocationListener myListener = new MyLocationListener();

    //BDAbstractLocationListener为7.2版本新增的Abstract类型的监听接口
//原有BDLocationListener接口暂时同步保留。具体介绍请参考后文第四步的说明
    public void onCreate() {
        mLocationClient = new LocationClient(getApplicationContext());
        //声明LocationClient类
        mLocationClient.registerLocationListener(myListener);
        //注册监听函数
        LocationClientOption option = new LocationClientOption();

        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
//可选，设置定位模式，默认高精度
//LocationMode.Hight_Accuracy：高精度；
//LocationMode. Battery_Saving：低功耗；
//LocationMode. Device_Sensors：仅使用设备；

        option.setCoorType("bd09ll");
//可选，设置返回经纬度坐标类型，默认GCJ02
//GCJ02：国测局坐标；
//BD09ll：百度经纬度坐标；
//BD09：百度墨卡托坐标；
//海外地区定位，无需设置坐标类型，统一返回WGS84类型坐标

        option.setScanSpan(1000);
//可选，设置发起定位请求的间隔，int类型，单位ms
//如果设置为0，则代表单次定位，即仅定位一次，默认为0
//如果设置非0，需设置1000ms以上才有效

        option.setOpenGps(true);
//可选，设置是否使用gps，默认false
//使用高精度和仅用设备两种定位模式的，参数必须设置为true

        option.setLocationNotify(true);
//可选，设置是否当GPS有效时按照1S/1次频率输出GPS结果，默认false

        option.setIgnoreKillProcess(false);
//可选，定位SDK内部是一个service，并放到了独立进程。
//设置是否在stop的时候杀死这个进程，默认（建议）不杀死，即setIgnoreKillProcess(true)

        option.SetIgnoreCacheException(false);
//可选，设置是否收集Crash信息，默认收集，即参数为false

//        option.setWifiCacheTimeOut(5 * 60 * 1000);
////可选，V7.2版本新增能力
////如果设置了该接口，首次启动定位时，会先判断当前Wi-Fi是否超出有效期，若超出有效期，会先重新扫描Wi-Fi，然后定位

        option.setEnableSimulateGps(false);
//可选，设置是否需要过滤GPS仿真结果，默认需要，即参数为false

//        option.setNeedNewVersionRgc(true);
//可选，设置是否需要最新版本的地址信息。默认需要，即参数为true

        mLocationClient.setLocOption(option);
        mLocationClient.start();
//mLocationClient为第二步初始化过的LocationClient对象
//需将配置好的LocationClientOption对象，通过setLocOption方法传递给LocationClient对象使用
//更多LocationClientOption的配置，请参照类参考中LocationClientOption类的详细说明
    }

    private void joinGroup(String password) {
        if (TextUtils.isEmpty(lat)) {
            ToastUtils.showShort("未获取到您的位置信息，请检查定位相关权限是否打开");
            return;
        }
        //token = d24ae5feafa311da643b0e
        //lon = 120.209288 ,lat=30.191684 ,password = 123456
        //frontapi/jmessage/face-to-face-group/init
        showLoadingDialog();
        ChatServiceFactory.faceToFaceCreate(lon, lat, password)
                .subscribe(new AbstractSubscriber<BaseResponse<CreateGroupByPasswordEntity>>(this) {
                    @Override
                    public void onNext(BaseResponse<CreateGroupByPasswordEntity> createGroupByPasswordEntityBaseResponse) {
                        ToastUtils.showShort("加入成功");
                        dismissLoadingDialog();

                        finishActivity();
//                        ChatServiceFactory.faceToFaceJoin(createGroupByPasswordEntityBaseResponse.getData().getUuid()).subscribe(new AbstractSubscriber<BaseResponse<CreateGroupByPasswordEntity>>(CreateGroupByPasswordActivity.this) {
//                            @Override
//                            public void onNext(BaseResponse<CreateGroupByPasswordEntity> createGroupByPasswordEntityBaseResponse) {
//
//                            }
//                        });
                    }

                    @Override
                    public void onError(Throwable e) {
                        super.onError(e);
                        dismissLoadingDialog();
                    }
                });
    }

    public class MyLocationListener implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation bdLocation) {
            double latitude = bdLocation.getLatitude();    //获取纬度信息
            double longitude = bdLocation.getLongitude();    //获取经度信息
            float radius = bdLocation.getRadius();    //获取定位精度，默认值为0.0f
            lon = longitude + "";
            lat = latitude + "";
            String coorType = bdLocation.getCoorType();
            //获取经纬度坐标类型，以LocationClientOption中设置过的坐标类型为准

            int errorCode = bdLocation.getLocType();
            //获取定位类型、定位错误返回码，具体信息可参照类参考中BDLocation类中的说明
        }

        @Override
        public void onConnectHotSpotMessage(String s, int i) {

        }
    }


}
